#include <stdio.h>

/**
 * 遍历打印数组
 * @param a
 * @param length
 */
void printArray(int a[], int length) {
    // 数组传递时，无法传递元素个数，因此需要单独作为一个参数进行传递
    for (int i = 0; i < length; ++i) {
        printf("a[%d]=%d\n", i, a[i]);
    }
    // 由于传入的是数组地址，所以改变数组中的元素会导致主函数访问时也发生变化
    a[4] = 100;
}

/**
 * 模拟数组访问越界
 * @return
 */
int main() {

    int j = 10;
    int a[5] = {1, 2, 3, 4, 5};
    int i = 3;

    // 数组越界访问可能导致其他变量被修改（内存问题引起）
    printf("i=%d, j=%d\n", i, j);
    a[5] = 10;
    a[6] = 12;
    a[7] = 14;
    a[-2] = -4;
    printf("i=%d, j=%d\n", i, j);

    printArray(a, 5);
    printf("a[4]=%d\n", a[4]);    // a[4]发生改变

    return 0;
}
